﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.ComponentModel.DataAnnotations;

namespace ITProject.WebUI.Models.Project
{
    /// <summary>
    /// Klasa modelu widokowego służąca do wyświetlania listy wszystkich projektów na liście.
    /// Autor: Jakub Szatkowski
    /// </summary>
    public class ProjectProjectsViewModel
    {
        public string LogoPath { get; set; }
        [Required]
        [MaxLength(30, ErrorMessage="Nazwa projektu moze mieć maksymalnie 30 znaków")]
        public string Name { get; set; }
        public string ShortDescription { get; set; }

        static string defaultlogo = "default_logo.png";
        
        /// <summary>
        /// Metoda statyczna konwertująca kolekcję obiektów encji projekt w kolekcję obiektów modelu widokowego listy projektów.
        /// Autor: Jakub Szatkowski
        /// </summary>
        /// <param name="projects">Kolekacja obiektów encji projekt.</param>
        /// <returns>Kolekcja obiektów modelu widokowego listy proejktów.</returns>
        public static IEnumerable<ProjectProjectsViewModel> Convert(IEnumerable<ITProject.Domain.Entities.Project> projects)
        {
            ProjectProjectsViewModel[] projectsViewModel = new ProjectProjectsViewModel[projects.Count()];
            int i = 0;
            foreach (ITProject.Domain.Entities.Project project in projects)
            {
                projectsViewModel[i] = new ProjectProjectsViewModel();
                string logoPath = defaultlogo;
                if (project.LogoPath != null)
                    logoPath = project.LogoPath;
                projectsViewModel[i].LogoPath = logoPath;
                projectsViewModel[i].Name = project.Name;
                projectsViewModel[i].ShortDescription = project.ShortDescription;
                i++;
            }
            return projectsViewModel;
        }
    }
}